Abfrage auswerten, Variable übergeben - Problem

Abfrage auswerten, Variable übergeben - Problem

am 22.11.2004 02:54:48 von j_wenke

Hallo,
aus einer query wollte ich auf einer Seite
mit Hilfe von zwei Schleifen zweimal Bilder
darstellen (große und kleine aus pic-Ordner).
Nun scheint die letzte Schleife immer nicht mehr
an das query-Ergebnis zu kommen:
Wenn Erste auskommentiert, dann ...
man bekommt immer nur eine Reihe zu Gesicht.

Könntet ihr mir beschreiben, woran das liegt?
Wie reiche ich "das Ergebnis" am Besten weiter?
Vielen Dank, Jörg
(Newbie)

A
...............................
if ($vw = mysql_fetch_array($result)){
do {
lypic ("ly$vw[fname]", "$pic1path$vw[fname]", "hidden");
}
while ($vw2 = mysql_fetch_array($result));
...............................

B
...............................


while($vw = mysql_fetch_array($result)) {
if(!$i%3) {
echo $first."";
$first = "";
}
echo "";
$i++;
...............................

Re: Abfrage auswerten, Variable übergeben- Problem

am 22.11.2004 10:17:40 von Daniel Jaenecke

j wenke wrote:

> aus einer query wollte ich auf einer Seite
> mit Hilfe von zwei Schleifen zweimal Bilder
> darstellen (große und kleine aus pic-Ordner).

Ich kenne nur Leitz-Ordner.

> Nun scheint die letzte Schleife immer nicht mehr
> an das query-Ergebnis zu kommen:
> Wenn Erste auskommentiert, dann ...
> man bekommt immer nur eine Reihe zu Gesicht.

Verstehe ich das richtig, Du möchtest das Ergebnis Deiner Query ($result)
zwei mal durchlaufen? Dann solltest Du es nach dem ersten Durchlauf per
mysql_data_seek() [1] zurücksetzen.

Lies bitte
1.17. Wie stelle ich meine Frage an die Newsgroup am sinnvollsten?
http://www.php-faq.de/q/q-newsgroup-fragen.html

> if ($vw = mysql_fetch_array($result)){
> do {
> lypic ("ly$vw[fname]", "$pic1path$vw[fname]", "hidden");
> }
> while ($vw2 = mysql_fetch_array($result));

warum verwendest Du ein so umständliches Kostrukt anstatt (wie auch unter B)
einer while()-Schleife?

Nebenbei solltest Du Dir noch überlegen, ob Du wirklich mysql_fetch_array()
[2] verwenden möchtest, da es daß Ergebnis mit numerischen _und_
assoziativen Indizes, also doppelt, zurückliefert. Wenn Du - wie in den von
Dir geposteten Ausschnitten - ausschließlich mit den aossziativen Indizes
arbeitest solltest Du entweder als zweiten optionalen Parameter MYSQL_ASSOC
angeben oder direkt auf mysql_fetch_assoc() [3] umschwenken
(mysql_fetch_row() [4] für rein numerische Indizes).

Gruß
-dj-

[1] http://www.php.net/mysql_data_seek
[2] http://www.php.net/mysql_fetch_array
[3] http://www.php.net/mysql_fetch_assoc
[4] http://www.php.net/mysql_fetch_row

--
Der Trick ist, die Grate zwischen den eigenen Wissensluecken zum
Bildungskanon und alles andere zu fachidiotischem Spezialwissen zu
erklaeren. [Andreas Kabel in de.etc.sprache.deutsch]

Re: Abfrage auswerten, Variable übergeben - Problem

am 22.11.2004 14:40:46 von j_wenke

Hallo Daniel,
Danke!
> Lies bitte
> 1.17. Wie stelle ich meine Frage an die Newsgroup am sinnvollsten?
> http://www.php-faq.de/q/q-newsgroup-fragen.html
Jjjupp!! ... :-|

> warum verwendest Du ein so umständliches Kostrukt anstatt (wie auch
unter B)
> einer while()-Schleife?
stimmt. Ich hatte noch eine Fehlermeldung hinten dran.

while ($vw = mysql_fetch_assoc($result));
} else {
echo "Leider nichts zu sehen";
}

die fällt ggf. später beim "Schleifen" raus.

Danke für die php-net-Verweise. Die haben nicht geholfen.
Ich kapiere die scheinbar noch nicht richtig.

----------
also $result wird der Variablen $vw2 zugewiesen:

if ($vw2 = mysql_fetch_assoc($result)){ ...

und stellt das erste "Bildpaket" zur Verfügung.
Dann wird $result der Variablen $vw zugewiesen:

while($vw = mysql_fetch_assoc($result)) { ...

und soll eigentlich das zweite ausgeben.
Das passiert aber nicht.
----------

Ich habe auch beide Male dieselbe Variable
probiert ($vw) und dann auch die 2. Zuweisung
gespart.

Grüße, Jörg

Re: Abfrage auswerten, Variable übergeben- Problem

am 22.11.2004 15:55:41 von Daniel Jaenecke

j wenke wrote:

> Danke für die php-net-Verweise. Die haben nicht geholfen.
> Ich kapiere die scheinbar noch nicht richtig.

Dann solltest Du dringend daran arbeiten. In einer Sprache programmieren zu
wollen, deren Manual man nicht versteht ist eher schwierig.
Nebenbei gibt es das Manual in einer Vielzahl von Sprachen, falls das
Englisch Dir Probleme bereitet.


> also $result wird der Variablen $vw2 zugewiesen:
>
> if ($vw2 = mysql_fetch_assoc($result)){ ...
>
> und stellt das erste "Bildpaket" zur Verfügung.
> Dann wird $result der Variablen $vw zugewiesen:
>
> while($vw = mysql_fetch_assoc($result)) { ...
>
> und soll eigentlich das zweite ausgeben.
> Das passiert aber nicht.

$result ist eine Resource [1]; da reicht es nicht, sie einfach X anderen
Variablen zuzuweisen, da diese Zuweisung "by reference" erfolgt - kurz,
wenn Du die resource änderst, wirkt sich das auf alle Variablen aus.
Deshalb funktioniert Deine Schleife auch nur einmal.

Und deshalb sollst Du mittels mysql_data_seek() den internen Zeiger wieder
zurücksetzen, um die Schleife ein weiteres Mal durchlaufen zu können.

Gruß
-dj-

[1] http://www.php.net/manual/en/language.types.resource.php

--
Der Trick ist, die Grate zwischen den eigenen Wissensluecken zum
Bildungskanon und alles andere zu fachidiotischem Spezialwissen zu
erklaeren. [Andreas Kabel in de.etc.sprache.deutsch]

Re: Abfrage auswerten, Variable übergeben - Problem

am 26.11.2004 16:12:33 von j_wenke

Hallo Daniel,

danke nochmal. Ich habs jetzt so:
A
................
mysql_data_seek($result, 0);
if ($vw = mysql_fetch_assoc($result)){
do {
lypic ("ly$vw[fname]", "$pic1path$vw[fname]", "hidden");
}
................
ich hatte mich etwas verrannt.
Zum ASSOC:
Ich habe "das assoc" mal so angewandt. Man könnte es ja auch
bei fetch_array in der Klammer hinterm $result platzieren.

Grüße, Jörg


"."